home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 25
/
Cream of the Crop 25.iso
/
bbs
/
ued300.zip
/
UED.DOC
< prev
next >
Wrap
Text File
|
1997-04-28
|
38KB
|
784 lines
UED Version 3.00
Maximus User Base Editor
Written by Colin Wheat
Created April 28, 1997
(C) Copyright 1990-1997 by CodeLand, All Rights Reserved
http://www.ami.com.au, http://bbs.ami.com.au
ftp://ftp.ami.com.au, Telnet/VMP://bbs.ami.com.au
codeland@ami.com.au, Fidonet: 3:690/613
UED is COMMERCIAL SHAREWARE software. Please register if you
intend to continue using UED. Please follow the registration
process detailed in the REGISTER.UED file.
TABLE OF CONTENTS
SECTION TITLE
1 LICENSE AGREEMENT
1.1 Distribution
1.2 Copying
1.3 Modification
1.4 Program Status
1.5 Disclaimer
2 ACKNOWLEDGMENTS AND CREDITS
2.1 Acknowledgments and Credits
2.2 Trademarks
2.3 Registration List
3 INTRODUCTION
3.1 Introduction
3.2 Requirements
3.3 Features
3.4 Distribution Notice
3.5 Limitations Prior to Registration
4 CONFIGURATION
4.1 Command Line
5 OPERATION
5.1 Introduction
5.2 Record Addition
5.3 Base Packing
5.4 Statistics
5.5 Global Delete
5.6 User Base Sort
5.7 Field Edit Keys
5.8 Program Hot Keys
6 RECORD DESCRIPTIONS
6.1 Introduction
6.2 Display and Editing
6.3 Indication
6.4 Deletion
7 MISCELLANEOUS
7.1 Problems and Bug Reports
7.2 Latest Version
7.3 About UED
8 APPENDIX
8.1 Maximus User Record Structure
8.2 Description File Structure
SECTION 1 - LICENSE AGREEMENT
1.1 DISTRIBUTION. YOU MAY COPY AND DISTRIBUTE VERBATIM COPIES OF UED
EXECUTABLE CODE AS YOU RECEIVE IT, IN ANY MEDIUM, PROVIDED THAT YOU
CONSPICUOUSLY AND APPROPRIATELY PUBLISH ON EACH COPY A VALID COPYRIGHT
NOTICE; KEEP INTACT THE NOTICES ON ALL FILES THAT REFER TO THIS LICENSE
AGREEMENT AND TO THE ABSENCE OF ANY WARRANTY; PROVIDE UNMODIFIED COPIES OF
THE DOCUMENTATION AS PROVIDED WITH THE PROGRAM; AND GIVE ANY OTHER RECIPIENTS
OF UED A COPY OF THIS LICENSE AGREEMENT ALONG WITH THE PROGRAM. YOU MAY
CHARGE A DISTRIBUTION FEE FOR THE PHYSICAL ACT OF TRANSFERING A COPY, BUT NO
MORE THAN IS NECESSARY TO RECOVER YOUR ACTUAL COSTS INCURRED IN THE TRANSFER.
UNDER NO CIRCUMSTANCES IS UED TO BE DISTRIBUTED IN SUCH A WAY AS TO BE
CONSTRUED AS "VALUE ADDED" IN A SALES TRANSACTION, SUCH AS, BUT NOT LIMITED
TO, SOFTWARE BUNDLED WITH A MODEM OR OTHER HARDWARE PRODUCT.
1.2 COPYING. YOU MAY NOT COPY, SUBLICENSE, DISTRIBUTE OR TRANSFER UED EXCEPT
AS EXPRESSLY PROVIDED UNDER THIS LICENSE AGREEMENT. ANY ATTEMPT OTHERWISE TO
COPY, SUBLICENSE, DISTRIBUTE OR TRANSFER UED IS VOID AND YOUR RIGHTS TO USE
THE PROGRAM UNDER THIS LICENSE AGREEMENT SHALL BE TERMINATED.
1.3 MODIFICATION. WITH THE EXCEPTION OF ARCHIVING METHOD, UED SHOULD NOT BE
DISTRIBUTED IN ANY MODIFIED FORM. THE COMPLETE ARCHIVE SHOULD BE DISTRIBUTED
CONTAINING THE ORIGINAL FILES. IT MAY BE RE-PACKAGED USING A DIFFERENT
ARCHIVAL METHOD AS LONG AS THE CONTENTS OF THE ARCHIVE ARE THE SAME AS THAT
OF THE DISTRIBUTION KIT. ADDITIONAL FILES MAY NOT BE ADDED TO THE ARCHIVE.
1.4 PROGRAM STATUS. THIS PROGRAM IS COMMERCIAL SOFTWARE, USING A SHAREWARE
DISTRIBUTION METHOD. USERS ARE REQUIRED TO REGISTER THE PROGRAM AFTER A
SUITABLE EVALUATION PERIOD. A REGISTRATION FORM IS SUPPLIED WITH THE PACKAGE.
1.5 DISCLAIMER. USE THIS PROGRAM AT YOUR OWN RISK. NO WARRANTY IS STATED OR
IMPLIED. THE AUTHOR SHALL NOT BE HELD RESPONSIBLE FOR ANY DAMAGES RESULTING
FROM IT'S USE DIRECTLY OR INDIRECTLY.
SECTION 2 - ACKNOWLEDGMENTS AND CREDITS
2.1 We would like to thank the following individuals for their support and
assistance.
Graham Stair, for porting the original UED code to the OS/2 operating system
back in Dec 91. Without his efforts we'd likely not have been able to provide
OS/2 support at that time. Graham also helped with improvements to the code,
both at problem or bug report levels and at the feature addition level.
Special thanks go to the beta testers who provided both problem reports and
feature requests. This includes the Australian beta test network, including
Paul Marwick, David Nugent, Lincoln Dale, and Andrew Gulovsen; and the
International Maximus Beta team, of which the Author is a member.
Thanks to Scott Dudley for his ever timely responses, the Maximus User
Structures, and for his longstanding development support for the the Maximus
bulletin board package.
2.2 The following companies hold the following trademarks or market the
following products mentioned or referred to in this manual.
IBM Corporation, Inc. OS/2
Microsoft Corporation MS-DOS
Microsoft Corporation MSC
Scott Dudley Maximus
Wynn Wagner Opus
2.3 Registration List
We'd like to thank the following people for registering UED V3.XX. Their
support is valued, and largely responsible for making this release possible.
Barry Ryder, Worongary QLD
Graeme Bell, Stratton WA
Alberto Pasquale, Modena, Italy
Bob Juge, Sugar Land, Texas USA
Ian Taylor, Guildford WA
Dallas Hinton, Vancouver, BC
Bob Swift, Stony Plain, Alberta
Dale Kaechler, Petawawa, Ont, Canada
Adelaide PC Users Group, Adelaide South Australia
Carsten Brandt, Berlin Germany
Coracle Pty Ltd, Perth WA
Sydney PC Users Group, IBM BBS
Sydney PC Users Group, Mail Exchange BBS
Hans Schuts, Culemborg
Galaxy Gateway, Brisbane QLD
Jim Rogerson, St Albert, Alberta
Tom Hall, Edmonton, Alberta, Canada
Christian Emig, 74189 Weinsberg
Craig Clark, Devonshire, Bermuda
Harald Kamm, Bamberg, Germany
Kurt Vogelsaenger, Neustadt/Wstr, Germany
Steven Evans, Auckland, NZ
Tracy Molitor, Milford CT, USA
Rafael Suarez Verdugo, Madrid
SECTION 3 - INTRODUCTION
3.1 Introduction
UED is an external Maximus User Base Editor, allowing rapid editing,
searching and sorting of your user records. Although the Maximus inbuilt User
Editor is full featured, UED allows quick and simple access to the User base.
It is able to fully use system resources without the code and space
limitations under which a remote editor usually must operate.
3.2 Requirements
MS-DOS 3.XX, its equivalent, or later version is required for DOS
operation. Operation under OS/2 requires OS/2 version 1.3 or later.
Maximus Version 3.XX.
3.3 Features
* Pop-up Menu system and full screen operation
* Maximus v3.XX support, and 8192 user records
* Optional text description or comment for every user record
* Browse screen allows paging through the User Base
* User Base sorting with sixteen key choices in two directions
* User Base search with four key choices including Name/Alias
* Instant User upgrade system, with sixteen configuration profiles
* Global functions allowing record deletion and setting of Keys
* Six user base statistics report screens
* Optional text descriptions of keys, and file compression record fields
* Supports OS/2 and (MS)DOS with the one executable
3.4 Distribution Notice
The distribution archive contents (UED300.LZH) are listed below:
UED.EXE - The program executable
UED.DOC - Documentation in text format
UED.HTM - Documentation in HTML (WEB) format
UED.GIF - HTML title image
ICONCOD.GIF - HTML Codeland icon image
REGISTER.UED - Package Registration
3.5 Limitations Prior to Registration
The distributed SHAREWARE release is identical in all respects to registered
versions. No new version of the code, package, or executable is required. The
registration process is simply a matter of adding three lines to the UED.INI
file. When the product is registered, unregistered limitations are removed.
For this release, the unregistered limitations consist of 1) an unregistered
warning at program startup, and 2) a limit imposed on the EDIT and BROWSE
screens, where by writes/updates to the USER.BBS database are limited to five
occurances per program execution. Exiting the program and re-executing it
will enable another five updates to the user file. Note that there is no date
expiry for release versions of UED. Previous beta versions have included a
date expiry to prevent longterm usage of obsolete code, and future beta
versions may also include date expiry checks.
SECTION 4- CONFIGURATION
4.1 Command Line
UED V3.00 - the Maximus V3.XX Specific User Base Editor
(C) Copyright 1990-97 by CodeLand, All Rights Reserved
Syntax: UED [-switch -switch ... ]
-C<name> Configuration file path & name
-G### Start at record ###
-D Force debug/maintenance mode
-A Use monochrome attributes
-M<path> Maximus directory override
-R Edit registration details
-? Program help screen
-C<path> UED Configuration file path and name. This switch allows operating
with multiple configurations. e.g. -Cued.ini
-G### Start operation at user record number ###. If the number specified is
greater then available records, UED seeks to the last record. Thus "UED
/g9999" would provide a goto last record function.
-D Force debug/maintenance mode. This can also be toggled on and off from
within UED, at the Configuration pop-up menu. Maintenance mode supports
editing of the LR pointer within each user record, and sorting by LR pointer.
-A Force monochrome text attributes.
-M<path> Full path to Maximus directory. Default is the current directory.
e.g. -MC:\Max
-R Edit registration details. Activates a registration entry box, exits to
the operating system.
-? Displays these command line controls.
SECTION 5 - OPERATION
5.1 Introduction
The use of hotkeys, full screen menus, and simple user interface means that
UED puts the power to manage your user base at your finger tips. All
functions are controlled directly from easily accessible menu options. UED is
rich in control keys, see both the field editing, and program hot keys listed
in this manual. Features to look for are the TAB descriptions toggle on the
Edit screen, and the TAB and Shift TAB PAN commands on the Browse screen.
5.2 Record Addition
The Append New Record pop-up menu option adds a new blank user record to the
user file. The new record is appended to the end of the file. UED makes the
new record the current record, and adjusts the screen to display it. The
string "Record created by UED" is entered in the name field to aid
identification of newly added records. During the record addition process UED
assigns the new record an unused message lastread pointer offset.
5.3 Base Packing
The Pack User File pop-up menu option rewrites the User file, deleting all
records marked with the Deleted flag. It writes the new User file using the
last Index method, giving you the option of sorting the on disk user base.
The pack option is generally used to remove old deleted records from the user
base. Also as mentioned above, it writes using indexed order, so this option
is used to sort your user base, in conjunction with the Index command.
5.4 Statistics
Included on the pop-up menu are six statistics screens. UED does not scan the
user base during power up so that base must be scanned to gather the needed
statistics for display during the first execution of any of the statistics
screens.
Most of the statistics screens are self explanatory, with the exception of
the Best Ten Users screen. This is a weighted display, sorted by the index
figure displayed in the right hand column. The index figure is calculated
from all of user calls to the system, the total uploads, and the total
downloads.
5.5 Global Delete
The function of this screen is to either set the delete flag depending on the
set criteria, or to clear all delete flags, during scanning of the complete
user base. Records are not removed. Assuming the record deleted flags are set
as you would choose after a global delete run, the Pack command can then be
used to remove or move deleted records from the user base. Note that all
settings on the Global Delete screen are saved in the UED configuration file
with the Save Settings command.
There are six setting types that control how UED decides whether a record
should be deleted. These are; days since last call, total calls made, keys to
block deletion, privilege level to process, a flag for not deleting records
with an expiry setting, and a flag for not deleting records containing a
Credit value. These six control types are detailed below.
5.5.1 Days. These setting are the heart of the Global Delete screen. A days
old figure can be set for each of the twelve privilege levels. All entries
default to 180 days, which is approx. six months. As an example, if you have
a figure of 180 for the Normal privilege level, then all records of Normal
privilege can only be marked as deleted if their last call date is earlier
than 180 days from the current system date. See also the Calls entry below.
5.5.2 Calls. The Calls entries are also considered when a priviledge level is
flagged for processing, such that the Days since last call entry is checked.
To enable the record to be deleted, as well as passing the Days check
detailed above, the record much have make less calls to the system than the
entered Calls value. To avoid a lockout problem, where after enough calls
have been made the record would not be deleted no matter how long since the
last call, there is also an "All Levels" Days setting with no Calls entry,
used as a last check for each priviledge level flagged for processing. Note
that the "All Levels" setting is ONLY applied to priviledge levels flagged
for processing.
5.5.3 Key Mask. This enables you to prevent deletion of records possessing
one or any combination of user keys. If you don't want keys considered during
the Global Delete, set all key flags to YES, meaning don't prevent deletion
for any key.
5.5.4 Privilege Levels. With this option, you can mask out whole privilege
levels from the Global Delete process. Any level set to NO will never be
marked as deleted. Normally you'd have the higher levels e.g. Sysop,
AsstSysop, and Clerk masked out on the assumption these levels should never
be removed during global maintenance.
5.5.5 Expiry Mask. The expiry mask flag, when set to NO, prevents all records
which have an Expiry setting other than None from being marked as deleted.
Useful for systems actively using the Maximus account expiry subsystem. The
assumption is that if the account already has an automatic expiry setting
active, global deletion by date would not be necessary nor desirable. To
ignore Expiry settings during Global Deletion runs, set this flag to YES.
5.5.6 Credit Mask. The credit mask flag, when set to NO, prevents all records
which have a Credit setting other than zero from being marked as deleted. To
ignore Credit settings during Global Deletion runs, set this flag to YES.
5.6 User Base Sort
UED supports sixteen sort methods, including the default index which is user
file order. Sort direction for each type can be either Normal (ascending), or
Reverse (descending). Maximus requires that the Sysop user record always be
first record in the user file. For this reason UED never moves or sorts the
first record.
Sorting is accessed by the Index menu option off the pop-up menu. To choose a
sort direction, simply hit <Enter> with the menu bar on the Normal/Reverse
item. To sort the user base, choose the sort type with the menu bar, and
press <Enter>.
UED references all on disk data via an in memory index. This index is set to
file order at program start up. Using the indexing or sorting commands is
simply sorting the in memory index. This has several implications. Firstly,
using the sort commands on the Index menu does NOT affect the user file on
the system disk drive. To save a sort order permanently, you should execute
the Pack command, which rewrites the user file to disk using the current sort
index. Secondly, depending on system response time (speed) some of the UED
functions will run at reduced speed when operating with other than the File
Order index. The Browse screen is one such case.
5.6.1 Multiple Keys. Multiple key sorting is supported, by executing
consecutive sorts. UED does maintain existing index order during non-unique
key indexing, making this possible. As an example, to sort the user base by
privilege level, using last name as a secondary key (meaning each privilege
level would have records in second name order), firstly sort by second name,
then by privilege. The privilege sort will maintain the existing order for
all privileges of the same value.
5.6.2 Sort methods
1 File Order - Current User File order (the default)
2 2nd Name - Last name
3 1st Name - First name
4 Alias - User Alias
5 Location - City field
6 Telephone - Telephone number
7 Data Phone - Data phone number
8 Msg Area - Current Message Area
9 File Area - Current File Area
10 Access LVL - User Privilege Level
11 Date Lcall - Last call date
12 Date PWChg - Password changed date
13 Call Count - Calls made to the system
14 Kb DnLoads - Total users downloads
15 Kb UpLoads - Total users uploads
* 16 LR Pointer - Last read pointer
* Only available in maintenance mode
5.7 Field Edit Keys
General command keys which are active during field editing and data entry are
listed below. Several of these key commands are not noted clearly within the
program.
ESC - Abort field editing, exit
END - Goto end of current field
HOME - Goto start of current field
UP ARROW - Step up one edit field
DOWN ARROW - Step down one edit field
TAB - Step one field right
Shift TAB - Step one field left
DEL - Delete character at cursor
BACKSPACE - Delete character left
Ctl BACKSPACE - Delete word left
Ctrl R - Restore field to original contents
Ctrl T - Delete word right
Ctrl U - Delete to end of field
Ctrl Y - Delete to end of last field
Ctrl-<Enter> - Save and exit field editing
INS - Toggle insert mode
5.8 Program Hot Keys
Several command functions can be executed by hotkey, giving a quick
'shortcut' access to the function. These exist in various places including
the Edit screen and the Browse screen.
5.8.1 Edit Screen
W - Edit password
X - Edit expiry
K - Edit keys
G - Edit Gender
M - Edit File/Msg Areas
Alt-1 to Alt-X - Key toggle
< - Privilege level downgrade
> - Privilege level upgrade
DEL - Toggle record deleted flag
TAB - Description display toggle
HOME - Goto first record
END - Goto last record
PAGE UP - Step back 16 records
PAGE DOWN - Step forward 16 records
UP ARROW - Step back one record
DOWN ARROW - Step forward one record
Grey + - Steps forward one record
Grey - - Step back one record
ESC - Pop-up menu
5.8.2 Browse Screen
< - Privilege level downgrade
> - Privilege level upgrade
DEL - Toggle record deleted flag
TAB - PAN screen right
Shift TAB - PAN screen left
HOME - Goto first record
END - Goto last record
PAGE UP - Step back 16 records
PAGE DOWN - Step forward 16 records
UP ARROW - Step back one record
DOWN ARROW - Step forward one record
Grey + - Steps forward one record
Grey - - Step back one record
ESC - Pop-up menu
SECTION 6 - RECORD DESCRIPTIONS
6.1 Introduction
UED supports the Maximus v2.XX external record description system. This
allows optional text comments for each user record. The design allows for up
to 4095 characters, though for screen space reasons UED currently limits it's
creation and editing to 165 characters, which is 3 short lines.
6.2 Display and Editing
Descriptions are displayed and edited from the Edit screen. A Descriptions
flag exists on the Setup menu to toggle display on or off, with the TAB key
being a quick shortcut hotkey for the same function. The Descriptions window
overlays some of the fields on the Edit screen, TAB quickly toggles between
the two alternate displays. This display flag is saved in the configuration
file so that UED will default to your preferred display. With the
descriptions window toggled on, using the Edit command allows editing or
creation of the description for the current record. When toggled off normal
editing is possible.
6.3 Indication
On the Edit screen, a new field to the right of the Alias field shows blank
for no description, and 'DESC' for records possessing an extended
description. For the Browse screen, existence of an extended description is
indicated by a small bullet character on the right hand edge of the screen.
Note that these two indicators are displaying the status of the USER.BBS
descriptions pointer. The descriptions text is stored in a file called
USER.EXT in the Maximus directory. If this file had been deleted UED will not
find the description, displaying a blank description field. To clear the
descriptions pointer in this case, as with description deletion below, simply
save a blank description.
6.4 Deletion
External descriptions are deleted by simply saving a blank description field.
Toggle the description display on (TAB), use the Edit command, <Enter> down
to the descriptions window, press HOME (goto start of current field), press
Ctrl-Y (erase current field), and press Ctrl-Enter (save and exit).
SECTION 7 - MISCELLANEOUS
7.1 Problems and Bug Reports
If you have come across any 'features' or have any suggestions on how to
improve UED, you can contact us through the net or via surface mail, at the
addresses listed below. All feed back good AND bad is welcomed. Much of what
has changed in UED since the last release is due to feedback offered over the
past years.
Post: CodeLand Australia
P.O.Box 351
Kalamunda WA 6076
AUSTRALIA
Internet: codeland@ami.com.au
Fidonet: 3:690/613.0
Perth's Library BBS
Colin Wheat, SysOp.
7.2 Latest Version
Via internet;
http://www.ami.com.au
http://bbs.ami.com.au
ftp://bbs.ami.com.au
Telnet/VMP:bbs.ami.com.au
E.g. the ftp path for this release is:
ftp://bbs.ami.com.au/pub/bbs/max/ued300.lzh
Via Fidonet;
The magic name UED will always offer the latest beta version available,
on the author's system (Fidonet 3:690/613). File requests are always
welcome. As with all beta software, usage is at your own risk. The
latest release archive is always available under it's own name.
7.3 About UED
UED is written in the C language with the Microsoft MSC v6.0 compiler. Using
the Family Mode API, the executable supports execution under DOS real-mode
and OS/2 protected mode. OS/2 operation is recommended for reasons of general
reliability and stability.
SECTION 8 - APPENDIX
8.1 Maximus User Record Structure
The following structure describes the format of the USER.BBS data file, in a
format suitable for usage by MSC6. Consult Maximus distributions for detailed
information.
#define INCL_DOS
#include <os2.h>
#define TRANSIENT 0
#define DEMOTED 10
#define LIMITED 20
#define NORMAL 30
#define WORTHY 40
#define PRIVIL 50
#define FAVORED 60
#define EXTRA 70
#define CLERK 80
#define ASSTSYSOP 90
#define SYSOP 100
#define HIDDEN 65535
/* Help levels */
#define EXPERT (UCHAR)0x02 /* grizzled veteran, no menus at all */
#define REGULAR (UCHAR)0x04 /* experienced user, brief menus */
#define NOVICE (UCHAR)0x06 /* Full menus plus additional hand-holding */
#define HOTFLASH (UCHAR)0x20 /* Hotkey, full-screen interface */
/* Masks for usr.bits1, below */
#define BITS_HOTKEYS 0x0001 /* Hotkeys, independent of HOTFLASH level */
#define BITS_NOTAVAIL 0x0002 /* If set, user is NOT normally available *
* for chat. */
#define BITS_FSR 0x0004 /* Full-screen reading in msg areas */
#define BITS_NERD 0x0008 /* Yelling makes no noise on sysop console */
#define BITS_NOULIST 0x0010 /* Don't display name in userlist */
#define BITS_TABS 0x0020 /* Reserved */
#define BITS_ENCRYPT 0x0040 /* Password encryption flag */
#define BITS_RIP 0x0080 /* Remote Imaging Prototocol support */
/* Masks for usr.bits2, below */
#define BITS2_BADLOGON 0x0001 /* MAX: if user's last logon attempt was bad*/
#define BITS2_IBMCHARS 0x0002 /* MAX: if user can receive high-bit chars */
#define BITS2_RSVD1 0x0004 /* MAX: *obsolete* 1.02 avatar flag */
#define BITS2_BORED 0x0008 /* Use the line-oriented editor */
#define BITS2_MORE 0x0010 /* Wants the "MORE?" prompt */
#define BITS2_RSVD2 0x0020 /* OPUS: set=wants Ansi */
#define BITS2_CONFIGURED 0x0040 /* OPUS: set=used Maximus before */
#define BITS2_CLS 0x0080 /* OPUS: set=transmit ^L, clear=ignore ^L */
#define BITS2_BIT8 0x0100 /* used to be 'usr.keys' */
#define BITS2_BIT9 0x0200 /* used to be 'usr.keys' */
#define BITS2_BITA 0x0400 /* used to be 'usr.keys' */
#define BITS2_BITB 0x0800 /* used to be 'usr.keys' */
#define BITS2_BITC 0x1000 /* used to be 'usr.keys' */
#define BITS2_BITD 0x2000 /* used to be 'usr.keys' */
#define BITS2_BITE 0x4000 /* used to be 'usr.keys' */
#define BITS2_BITF 0x8000 /* used to be 'usr.keys' */
#define SEX_UNKNOWN 0x0000
#define SEX_MALE 0x0001
#define SEX_FEMALE 0x0002
/* Masks for usr.delflag, below. WARNING! Only the first eight bits *
* of this flag should be used for compatibility with df_save! */
#define UFLAG_DEL 0x01
#define UFLAG_PERM 0x02
/* Masks for usr.xp_flag, below */
#define XFLAG_EXPDATE 0x0001 /* Use the xp_date to control access */
#define XFLAG_EXPMINS 0x0002 /* Use the xp_mins number to control access */
#define XFLAG_DEMOTE 0x0004 /* Demote user to priv level in usr.xp_priv */
#define XFLAG_AXE 0x0008 /* Just hang up on user */
/* Constants for usr.video, below */
#define GRAPH_TTY 0x00 /* The current user's graphics setting... */
#define GRAPH_ANSI 0x01
#define GRAPH_AVATAR 0x02
#define GRAPH_RIP 0x03
/* If protocol >= 0, then I suggest that you just print "External */
/* Protocol (n)", where 'n' is simply 'usr.def_proto+1'. */
#define PROTOCOL_none -1 /* Protocol to use for sending/receiving */
#define PROTOCOL_xmodem -2 /* files. If we're using an EXTERNAL */
#define PROTOCOL_ymodem -3 /* protocol, `protocol' will have a value */
#define PROTOCOL_xmodem1k -4 /* >= 0. */
#define PROTOCOL_sealink -5
#define PROTOCOL_zmodem -6
#define PROTOCOL_ymodemg -7
#define MAX_ALEN 64 /* MAX3: Max length of usr.msg[] and usr.files[] */
#pragma pack(1)
struct _stamp { /* DOS-style datestamp */
struct {
USHORT da : 5;
USHORT mo : 4;
USHORT yr : 7;
} date;
struct {
USHORT ss : 5;
USHORT mm : 6;
USHORT hh : 5;
} time;
};
struct _dos_st
{
USHORT date;
USHORT time;
};
union stamp_combo {
ULONG ldate;
struct _stamp msg_st;
struct _dos_st dos_st;
};
struct _usr {
UCHAR name[36]; /* Caller's name 0*/
UCHAR city[36]; /* Caller's location 36*/
UCHAR alias[21]; /* User's alias (handle) 72*/
UCHAR phone[15]; /* User's phone number 93*/
USHORT lastread_ptr; /* A num which points to offset in 108*/
/* file -- Offset of lastread pointer will be */
/* lastread_ptr*sizeof(int). */
USHORT timeremaining; /* Time left for current call (xtern pro 110*/
UCHAR pwd[16]; /* Password 112*/
USHORT times; /* Number of previous calls to this system 128*/
UCHAR help; /* Help level 130*/
USHORT group; /* MAX3: Group number (not implemented) 131*/
UCHAR video; /* user's video mode (see GRAPH_XXXX) 133*/
UCHAR nulls; /* Number of Nulls (delays) after <cr> 134*/
UCHAR bits; /* Bit flags for user (number 1) 135*/
USHORT dob_year; /* MAX3: Date of birth: year (1900-) 136*/
USHORT bits2; /* Bit flags for user (number 2) 138*/
SHORT max2priv; /* Access level 140*/
CHAR dataphone[19]; /* MAX3: Data/business phone number 142*/
UCHAR struct_len; /* len of struct, divided by 20. SEE ABOVE! 161*/
USHORT time; /* Time on-line so far today 162*/
USHORT delflag; /* Used to hold baud rate for O)utside comman164*/
/* In USER.BBS, usr.flag uses the constants */
/* UFLAG_xxx, defined earlier in this file. */
ULONG msgs_posted; /* MAX3: Total number of messages posted 166*/
ULONG msgs_read; /* MAX3: Total number of messages read 170*/
UCHAR width; /* Width of the caller's screen 174*/
UCHAR len; /* Height of the caller's screen 175*/
USHORT credit; /* Matrix credit, in cents 176*/
USHORT debit; /* Current matrix debit, in cents 178*/
USHORT xp_priv; /* Priv to demote to, when time or minutes ru180*/
/* out. */
SCOMBO xp_date; /* Bit-mapped date of when user expires 182*/
/* If zero, then no expiry date. */
ULONG xp_mins; /* How many minutes the user has left before 186*
* expiring. */
UCHAR xp_flag; /* Flags for expiry. See above XFLAG_XXX def190*/
UCHAR sex; /* MAX3: Sex: SEX_MALE or SEX_FEMALE) 191*/
SCOMBO ludate; /* Bit-mapped date of user's last call 192*/
ULONG xkeys; /* User's keys (all 32 of 'em) 196*/
UCHAR lang; /* The user's current language # 200*/
CHAR def_proto; /* Default file-transfer protocol 201*/
ULONG up; /* K-bytes uploaded, all calls 202*/
ULONG down; /* K-bytes downloaded, all calls 206*/
ULONG downtoday; /* K-bytes downloaded, today 210*/
UCHAR rsvd45[18]; /* MAX3: Reserved by Maximus for future use 214*/
USHORT call; /* Number of previous calls today 232*/
UCHAR compress; /* Default compression program to use 234*/
UCHAR df_save; /* MAX3: Used for storing real usr.delflag in235*
* LASTUSxx.BBS while in a door. */
ULONG extra; /* User description pointer 236*/
SCOMBO date_1stcall; /* Date of first call to system 400*/
SCOMBO date_pwd_chg; /* Date of last password change 244*/
ULONG nup; /* Number of files uploaded 248*/
ULONG ndown; /* Number of files downloaded 252*/
ULONG ndowntoday; /* Number of files downloaded today 256*/
USHORT time_added; /* Time credited to the user for today 260*/
UCHAR msg[MAX_ALEN]; /* Current message area 262*/
UCHAR files[MAX_ALEN];/* Current file area 326*/
UCHAR dob_day; /* Date of birth: day (1-31) 390*/
UCHAR dob_month; /* Date of birth: month (1-12) 391*/
ULONG point_credit; /* Total points allocated 392*/
ULONG point_debit; /* Total points used 396*/
SCOMBO date_newfile; /* Date of last new-files check 240*/
USHORT priv; /* Privilege level 404*/
UCHAR rsvd6[54]; /* Reserved for future use 406*/
};
#pragma pack()
8.2 Maximus Descriptions File Structure (USER.EXT)
00 'M' "M!" is the file identification
01 '!'
/ 02 0x0005 usr.lastread_ptr==5 <-- usr.extra points here
| 04 0x0003 Length of description including the NULL
Record 1 | 06 'H' \
Active | 07 'i' |- Description text
\ 08 '\0' /
/ 09 0x0006 usr.lastread_ptr==6 <-- usr.extra points here
| 11 0x8009 Length of description including the NULL
Record 2 | 13 'D' \
Deleted | 14 'e' |
| 15 'l' |
| 16 'e' |
| 17 't' |- Description text
| 18 'e' |
| 19 'd' |
| 20 '!' |
\ 21 '\0' /
/ 22 0x0007 usr.lastread_ptr==7 <-- usr.extra points here
| 24 0x0009 Length of description including the NULL
| 26 'T' \
| 27 'h' |
| 28 'e' |
| 29 ' ' |
Record 3 | 30 'B' |- Description text
Active | 31 'O' |
| 32 'S' |
| 33 'S' |
\ 34 '\0' /
35 EOF End of file